<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-alpha.65">
<title data-react-helmet="true">1.1 介绍 | Fur</title><meta data-react-helmet="true" name="docsearch:version" content="current,latest"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:title" content="1.1 介绍 | Fur"><meta data-react-helmet="true" name="description" content="&lt;img"><meta data-react-helmet="true" property="og:description" content="&lt;img"><meta data-react-helmet="true" property="og:url" content="https://chinadot.net/docs/"><link data-react-helmet="true" rel="shortcut icon" href="/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://chinadot.net/docs/"><link rel="stylesheet" href="/styles.8aef5b7b.css">
<link rel="preload" href="/styles.1af3f57f.js" as="script">
<link rel="preload" href="/runtime~main.e2f14afc.js" as="script">
<link rel="preload" href="/main.cb4b4173.js" as="script">
<link rel="preload" href="/1.7bcff63a.js" as="script">
<link rel="preload" href="/2.f71a81b4.js" as="script">
<link rel="preload" href="/01a85c17.755a5885.js" as="script">
<link rel="preload" href="/1be78505.572787d1.js" as="script">
<link rel="preload" href="/6875c492.a75dca0e.js" as="script">
<link rel="preload" href="/a6aa9e1f.005e050b.js" as="script">
<link rel="preload" href="/ccc49370.0b963bc5.js" as="script">
<link rel="preload" href="/ece76bd1.5f0e74a1.js" as="script">
<link rel="preload" href="/86.763e07e0.js" as="script">
<link rel="preload" href="/85.f9b1e033.js" as="script">
<link rel="preload" href="/f976f453.d1d87a8b.js" as="script">
<link rel="preload" href="/17896441.b0924391.js" as="script">
<link rel="preload" href="/4c30b939.61ef6eb4.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img class="navbar__logo" src="/img/logo.png" alt="Fur Logo"><strong class="navbar__title">Fur</strong></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Next</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs">文档</a><a class="navbar__item navbar__link" href="/blog">博客</a><a target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">配置</a></div><div class="navbar__items navbar__items--right"><a target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">视频</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">工具</a><ul class="dropdown__menu"><li><a target="_blank" rel="noopener noreferrer" class="dropdown__link" position="left">代码生成器</a></li></ul></div><a href="https://gitee.com/monksoul/Fur/board" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">看板</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">仓库</a><ul class="dropdown__menu"><li><a href="https://gitee.com/monksoul/Fur" target="_blank" rel="noopener noreferrer" class="dropdown__link" position="left">Gitee</a></li><li><a href="https://github.com/MonkSoul/Fur" target="_blank" rel="noopener noreferrer" class="dropdown__link" position="left">GitHub</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2aTZ"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_BsTx">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_BsTx">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img class="navbar__logo" src="/img/logo.png" alt="Fur Logo"><strong class="navbar__title">Fur</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a target="_blank" rel="noopener noreferrer" class="menu__link">Versions</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link navbar__link--active" href="/docs">文档</a></li><li class="menu__list-item"><a class="menu__link" href="/blog">博客</a></li><li class="menu__list-item"><a target="_blank" rel="noopener noreferrer" class="menu__link">配置</a></li><li class="menu__list-item"><a target="_blank" rel="noopener noreferrer" class="menu__link">视频</a></li><li class="menu__list-item"><a target="_blank" rel="noopener noreferrer" class="menu__link menu__link--sublist">工具</a><ul class="menu__list"><li class="menu__list-item"><a target="_blank" rel="noopener noreferrer" class="menu__link" position="left">代码生成器</a></li></ul></li><li class="menu__list-item"><a href="https://gitee.com/monksoul/Fur/board" target="_blank" rel="noopener noreferrer" class="menu__link">看板</a></li><li class="menu__list-item"><a target="_blank" rel="noopener noreferrer" class="menu__link menu__link--sublist">仓库</a><ul class="menu__list"><li class="menu__list-item"><a href="https://gitee.com/monksoul/Fur" target="_blank" rel="noopener noreferrer" class="menu__link" position="left">Gitee</a></li><li class="menu__list-item"><a href="https://github.com/MonkSoul/Fur" target="_blank" rel="noopener noreferrer" class="menu__link" position="left">GitHub</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_2gpo"><div class="docSidebarContainer_3_JD" role="complementary"><div class="sidebar_2urC"><div class="menu menu--responsive menu_5FrY"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_Dm3K" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 32 32" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">1. 框架介绍</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/">1.1 介绍</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/author">1.2 关于作者</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/source">1.3 源码结构</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/reference">1.4 项目引用</a></li></ul></li><li class="menu__list-item"><a class="menu__link" href="/docs/get-start">2. 一分钟入门</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/appstartup">3. 应用启动</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">4. 配置与选项</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/configuration">4.1 配置</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/options">4.2 选项</a></li></ul></li><li class="menu__list-item"><a class="menu__link" href="/docs/dynamic-api-controller">5. 动态 WebAPI</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/specification-document">6. 规范化接口文档</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/friendly-exception">7. 友好异常处理</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/data-validation">8. 数据校验</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">9. 数据库操作指南</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext">9.1 数据库上下文</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-locator">9.2 数据库上下文定位器</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/entity">9.3 数据库实体</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-repository">9.4 仓储模式</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-add">9.5 新增操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-update">9.6 更新操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-add-or-update">9.7 新增或更新操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-delete">9.8 删除操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-batch">9.9 批量操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-query">9.10 查询操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-hight-query">9.11 高级查询操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-view">9.12 视图操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-proc">9.13 存储过程操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-function">9.14 函数操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-sql">9.15 Sql 操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-sql-template">9.16 Sql 模板</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-sql-proxy">9.17 Sql 高级代理</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-multi-database">9.18 多数据库操作</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-db-first">9.19 数据库生成模型</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-code-first">9.20 模型生成数据库</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-seed-data">9.21 实体种子数据</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-audit">9.22 审计日志</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-filter">9.23 实体/全局查询筛选器</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-Interceptor">9.24 数据库操作拦截器</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/tran">9.25 事务和工作单元</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/dbcontext-read-write">9.26 读写分离/主从复制</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/split-db">9.27 分表分库</a></li></ul></li><li class="menu__list-item"><a class="menu__link" href="/docs/saas">10. SaaS 多租户</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/dependency-injection">11. 依赖注入/控制反转</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/object-mapper">12. 对象数据映射</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/cache">13. 分布式缓存</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/auth-control">14. 安全鉴权</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/cors">15. CORS 跨域</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/local-language">16. 多语言处理</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/view-engine">17. 视图引擎</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/event-bus">18. 事件总线</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/logging">19. 日志记录</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/http">20. 网络请求</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/process-service">21. 进程服务</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/job">22. 任务调度</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/signalr">23. 即时通讯</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/grpc">24. Grpc 服务</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/deploy">25. 托管部署</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devops">26. 持续部署集成</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">27. 测试指南</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/unittest">27.1 单元测试</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/performance">27.2 性能测试</a></li></ul></li><li class="menu__list-item"><a class="menu__link" href="/docs/contribute">28. 贡献指南</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">29. 常见问题</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/answer">29.1 常见问题</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/errors">29.2 常见错误</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gooduse">29.3 最佳实践</a></li></ul></li></ul></div></div></div><main class="docMainContainer_3EyW"><div class="container padding-vert--lg docItemWrapper_1EkI"><div class="row"><div class="col docItemCol_2ASc"><div class="docItemContainer_3QWW"><article><header><h1 class="docTitle_1Lrw">1.1 介绍</h1></header><div class="markdown"><img src="/img/furlogo.png" height="80" style="margin:0 auto;display:block"><div style="text-align:center;margin-top:25px"><p><a href="https://gitee.com/monksoul/Fur/stargazers" target="_blank" rel="noopener noreferrer"><img src="https://gitee.com/monksoul/Fur/badge/star.svg?theme=gvp" alt="star"></a> <a href="https://gitee.com/monksoul/Fur/members" target="_blank" rel="noopener noreferrer"><img src="https://gitee.com/monksoul/Fur/badge/fork.svg?theme=gvp" alt="fork"></a> <a href="https://github.com/MonkSoul/Fur/stargazers" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/github/stars/MonkSoul/Fur?logo=github" alt="GitHub stars"></a> <a href="https://github.com/MonkSoul/Fur/network" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/github/forks/MonkSoul/Fur?logo=github" alt="GitHub forks"></a> <a href="https://github.com/MonkSoul/Fur/blob/main/LICENSE" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/github/license/MonkSoul/Fur" alt="GitHub license"></a> <a href="https://www.nuget.org/packages/Fur" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Nuget-1.0.0--rc.final-blue" alt="nuget"></a></p></div><div style="text-align:center"><p><code>Fur</code> 是 <code>.NET 5</code> 平台下企业应用开发最佳实践框架。</p></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-名字的由来"></a>🍕 名字的由来<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-名字的由来" title="Direct link to heading">#</a></h2><blockquote><p>故事是这样子的：</p><p>起初，想开发一个极易入门、极易维护的框架，开发理念为：<code>一切从简，只为了更懒</code>。</p><p>所以自然而然想到了：<code>Lazier</code>，也就是 <strong>更懒</strong> 的意思。但是 <strong>更懒</strong> 和 <strong>更烂</strong> 读音相近且中文名没有特色，对此换名问题我苦恼了好几天。</p><p>刚好有一次我在博客园中帮一个博友解答问题，解决后博友赞扬我对 <code>.NET Core</code> 颇有了解，我就顺嘴回答了一句：<strong>“略懂皮毛”</strong>。</p><p>就这时，脑瓜子灵机一动，干脆起名为：<strong>“皮毛”</strong>？英文单词 <strong>“<code>Fur</code> [fɜː(r)]”</strong>，单词又短而且中文读音既俗气又顺口。😄😎</p><p>所以，<strong><code>Fur</code></strong> 就诞生了。</p><p>之后就有了 <strong>“小僧不才，略懂皮毛（Fur）。”</strong> 广告语 和 <strong><a href="https://chinadot.net" target="_blank" rel="noopener noreferrer">chinadot.net</a></strong> 域名。</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-关于-logo"></a>🍔 关于 LOGO<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-关于-logo" title="Direct link to heading">#</a></h2><p><code>Fur</code> LOGO 设计由 <code>F</code> <code>U</code> <code>R</code> 三个单词组成：</p><img src="/img/logo2.png" height="120" style="display:block"><p>我相信很多人看到 <code>Fur</code> 的 LOGO 时都会问：“为什么选择奶牛？”，因为 <strong>那些年吹过的牛逼都实现了 🐮</strong>。</p><p>之所以选择 <strong>奶牛</strong> 是因为 <code>牛</code> 具有脚踏实地，任劳任怨的做事风格，同时 <strong>奶牛</strong> 意味着丰富的营养价值，正如 <code>Fur</code> 所能带给你的。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-文档地址"></a>🍟 文档地址<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-文档地址" title="Direct link to heading">#</a></h2><ul><li>国内文档：<a href="https://monksoul.gitee.io/fur/" target="_blank" rel="noopener noreferrer">https://monksoul.gitee.io/fur/</a></li><li>国外文档：<a href="https://chinadot.net" target="_blank" rel="noopener noreferrer">https://chinadot.net</a></li></ul><p><strong>目前文档正在逐步完善中。</strong></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥦-系列教程"></a>🥦 系列教程<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥦-系列教程" title="Direct link to heading">#</a></h2><ul><li>Fur 使用例子：<a href="https://gitee.com/monksoul/fur-samples" target="_blank" rel="noopener noreferrer">https://gitee.com/monksoul/fur-samples</a></li><li>Fur 系列教程：<a href="https://gitee.com/monksoul/Fur/blob/main/tutorials" target="_blank" rel="noopener noreferrer">《学 .NET 5 从 Fur 开始》</a> 系列</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-开源地址"></a>🌭 开源地址<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-开源地址" title="Direct link to heading">#</a></h2><ul><li>Gitee：<a href="https://gitee.com/monksoul/Fur" target="_blank" rel="noopener noreferrer">https://gitee.com/monksoul/Fur</a></li><li>GitHub：<a href="https://github.com/monksoul/Fur" target="_blank" rel="noopener noreferrer">https://github.com/monksoul/Fur</a></li><li>Docker：<a href="https://hub.docker.com/r/monksoul/fur" target="_blank" rel="noopener noreferrer">https://hub.docker.com/r/monksoul/fur</a></li><li>Nuget：<a href="https://www.nuget.org/packages/Fur" target="_blank" rel="noopener noreferrer">https://www.nuget.org/packages/Fur</a></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-docker-镜像"></a>🍿 Docker 镜像<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-docker-镜像" title="Direct link to heading">#</a></h2><ul><li><code>Docker Hub</code> 线上镜像</li></ul><div class="mdxCodeBlock_1XEh"><div class="codeBlockContent_1u-d"><button type="button" aria-label="Copy code to clipboard" class="copyButton_10dd">Copy</button><div tabindex="0" class="prism-code language-shell codeBlock_3iAC"><div class="codeBlockLines_b7E3" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run --name fur -p </span><span class="token number" style="color:rgb(247, 140, 108)">5000</span><span class="token plain">:80 monksoul/fur:v1.0.0-rc.final.34</span></div></div></div></div></div><ul><li><code>手动</code> 打包镜像</li></ul><p>打开 <code>CMD/Shell/PowerShell</code> 进入 <code>Fur</code> 项目根目录打包 <code>Fur</code> 镜像：</p><div class="mdxCodeBlock_1XEh"><div class="codeBlockContent_1u-d"><button type="button" aria-label="Copy code to clipboard" class="copyButton_10dd">Copy</button><div tabindex="0" class="prism-code language-shell codeBlock_3iAC"><div class="codeBlockLines_b7E3" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker build -t fur:v1.0.0-rc.final.34 </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span></div></div></div></div></div><p>打包成功后，直接 <code>docker run</code>：</p><div class="mdxCodeBlock_1XEh"><div class="codeBlockContent_1u-d"><button type="button" aria-label="Copy code to clipboard" class="copyButton_10dd">Copy</button><div tabindex="0" class="prism-code language-shell codeBlock_3iAC"><div class="codeBlockLines_b7E3" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run --name fur -p </span><span class="token number" style="color:rgb(247, 140, 108)">5000</span><span class="token plain">:80 fur:v1.0.0-rc.final.34</span></div></div></div></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-框架特点"></a>🍎 框架特点<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-框架特点" title="Direct link to heading">#</a></h2><ul><li>全新面貌：基于 <code>.NET 5</code> 平台，没有历史包袱</li><li>极易入门：只需要一个 <code>Inject()</code> 即可完成配置</li><li>极速开发：内置丰富的企业应用开发功能</li><li>极少依赖：框架只依赖三个第三方包</li><li>极其灵活：轻松面对多变复杂的需求</li><li>极易维护：采用独特的架构思想，只为长久维护设计</li><li>完整文档：提供完善的开发文档</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥞-架构设计"></a>🥞 架构设计<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥞-架构设计" title="Direct link to heading">#</a></h2><p>正在整理中...</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥝-功能模块"></a>🥝 功能模块<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥝-功能模块" title="Direct link to heading">#</a></h2><img src="/img/furfunctions.png"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥐-框架依赖"></a>🥐 框架依赖<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥐-框架依赖" title="Direct link to heading">#</a></h2><p><code>Fur</code> 为了追求极速入门，极致性能，尽可能的不使用或减少第三方依赖。目前 <code>Fur</code> 仅集成了以下三个依赖：</p><ul><li><a href="https://github.com/MapsterMapper/Mapster" target="_blank" rel="noopener noreferrer">Mapster</a>：比 <code>AutoMapper</code> 还高性能的对象映射</li><li><a href="https://github.com/MiniProfiler/dotnet" target="_blank" rel="noopener noreferrer">MiniProfiler</a>：性能分析和监听必备</li><li><a href="https://github.com/domaindrivendev/Swashbuckle.AspNetCore" target="_blank" rel="noopener noreferrer">Swashbuckle</a>：<code>Swagger</code> 接口文档</li></ul><p>麻雀虽小五脏俱全。<code>Fur</code> 即使只集成了这三个依赖，但是主流的 <code>依赖注入/控制反转</code>，<code>AOP</code> 面向切面编程，<code>事件总线</code>，<code>数据验证</code>，<code>数据库操作</code> 等等一个都不少。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥗-环境要求"></a>🥗 环境要求<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥗-环境要求" title="Direct link to heading">#</a></h2><ul><li>Visual Studio 2019 Preview 16.8 +</li><li>.NET 5 SDK +</li><li>.Net Standard 2.1 +</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥪-支持平台"></a>🥪 支持平台<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥪-支持平台" title="Direct link to heading">#</a></h2><ul><li>运行环境<ul><li>Windows</li><li>Linux</li><li>MacOS</li><li>Docker/K8S/K3S/Rancher</li><li>Xamarin/MAUI</li></ul></li><li>数据库<ul><li>SqlServer</li><li>Sqlite</li><li>Azure Cosmos</li><li>MySql</li><li>PostgreSQL</li><li>InMemoryDatabase</li><li>Oracle</li><li>Firebird</li><li>达梦数据库</li></ul></li><li>应用部署<ul><li>Kestrel</li><li>Nginx</li><li>Jexus</li><li>IIS</li><li>Apache</li><li>PM2</li><li>Supervisor</li><li>单文件</li><li>容器（Docker/K8S/K3S/Rancher）</li></ul></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-关于性能"></a>🍖 关于性能<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-关于性能" title="Direct link to heading">#</a></h2><p><code>Fur</code> 目前采用 <code>Visual Studio 2019 Preview 16.8</code> 自带性能测试和 <code>JMeter</code> 进行测试，由于篇幅有限，只贴部分测试图，测试结果如下：</p><img src="/img/xncs.png"><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-关于作者"></a>🍚 关于作者<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-关于作者" title="Direct link to heading">#</a></h2><p>一个拥有 12 年开发经验 <code>.NETer</code>。喜欢分享，喜欢新技术，在互联网多个技术领域皆有涉猎。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-项目成员"></a>🍤 项目成员<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-项目成员" title="Direct link to heading">#</a></h2><a href="https://gitee.com/monksoul" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/324/974299_monksoul_1578937227.png!avatar100" height="40"></a><a href="https://gitee.com/dotnetchina" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/2685/8055741_dotnetchina_1599843748.png!avatar100" height="40"></a><a href="https://gitee.com/zero530" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/574/1722306_zero530_1578958528.png!avatar100" height="40"></a><a href="https://gitee.com/rgleehom" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="" height="40"></a><a href="https://gitee.com/KaneLeung" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/483/1449079_KaneLeung_1600227210.png!avatar100" height="40"></a><a href="https://gitee.com/qd98zhq" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/205/617984_qd98zhq_1600045204.png!avatar100" height="40"></a><a href="https://gitee.com/andyliuqiurong" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/19/58386_andyliuqiurong_1600142677.png!avatar100" height="40"></a><a href="https://gitee.com/co1024" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/627/1883684_co1024_1600418760.png!avatar100" height="40"></a><a href="https://gitee.com/LkyQiuFeng" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/195/586044_LkyQiuFeng_1594628004.png!avatar100" height="40"></a><a href="https://gitee.com/yzyk126" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/237/711378_yzyk126_1600742932.png!avatar100" height="40"></a><a href="https://gitee.com/lindexi" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/262/787628_lindexi_1600869623.png!avatar100" height="40"></a><a href="https://gitee.com/www.fengyunmy.com" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/33/101022_www.fengyunmy.com_1602044110.png!avatar100" height="40"></a><a href="https://gitee.com/zhouhuasheng2020" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="" height="40"></a><a href="https://gitee.com/mabo192" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="" height="40"></a><a href="https://gitee.com/yqyx" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/458/1374721_yqyx_1602561388.png!avatar200" height="40"></a><a href="https://gitee.com/ZYX315" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/285/856214_ZYX315_1602561602.png!avatar200" height="40"></a><a href="https://gitee.com/hdying" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/660/1982081_hdying_1602561538.png!avatar200" height="40"></a><a href="https://gitee.com/vincywindy" target="_blank" rel="noopener noreferrer" margin="5" style="margin:5px"><img src="https://portrait.gitee.com/uploads/avatars/user/313/939875_vincywindy_1602575487.png!avatar200" height="40"></a><p></p><p>🎈 欢迎更多的开发者加入 <code>Fur</code> 大家庭。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-他们都在用"></a>🍝 他们都在用<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-他们都在用" title="Direct link to heading">#</a></h2><ul><li>百签科技（广东）有限公司</li><li>码为科技（广州）有限公司</li><li>广州启顺国际货运代理有限公司</li><li>森丰供应链服务（广州）有限公司</li><li>中山赢友网络科技有限公司</li><li>中山模思软件科技有限公司</li><li>珠海市恒泰新软件有限责任公司</li><li>珠海思诺锐创软件有限公司</li><li>深圳市易胜科技有限公司</li><li>重庆虫儿飞科技有限公司</li><li>重庆林木森科技有限公司</li><li>深圳市品立方科技有限公司</li><li>上海奥达科股份有限公司</li></ul><p>如果您的项目使用到 <code>Fur</code> 开发，可以告诉我们。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-贡献代码"></a>🍻 贡献代码<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-贡献代码" title="Direct link to heading">#</a></h2><p><code>Fur</code> 遵循 <code>Apache-2.0</code> 开源协议，欢迎大家提交 <code>PR</code> 或 <code>Issue</code>。</p><p>如果要为项目做出贡献，请查看贡献指南。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="-捐赠列表"></a>🍍 捐赠列表<a aria-hidden="true" tabindex="-1" class="hash-link" href="#-捐赠列表" title="Direct link to heading">#</a></h2><p>注：排序按捐赠顺序书写</p><table><thead><tr><th>捐赠人昵称</th><th>捐赠金额（元）</th><th>附语</th></tr></thead><tbody><tr><td>🤴 爱吃油麦菜</td><td><strong>100</strong></td><td>感谢您的开源项目！</td></tr><tr><td>👳‍♂️ 麦壳饼</td><td><strong>200</strong></td><td>感谢您的开源项目！</td></tr><tr><td>👨 Sun</td><td><strong>100</strong></td><td>感谢您的开源项目！</td></tr><tr><td>👶 d617617</td><td><strong>20</strong></td><td>感谢您的开源项目！</td></tr><tr><td>👦 Diqiguoji008</td><td><strong>16.66</strong></td><td>见贤思齐</td></tr><tr><td>👲 nodyang</td><td><strong>100</strong></td><td>感谢您的开源项目！</td></tr><tr><td>👳‍♀️ mictxd</td><td><strong>100</strong></td><td>吹过的牛都实现。</td></tr><tr><td>🧓 欧流全</td><td><strong>10</strong></td><td>希望将来超越 Spring</td></tr><tr><td>👨‍⚕️ lionkon</td><td><strong>10</strong></td><td>...看了框架感觉拿来学习是很不错的...</td></tr><tr><td>😤 好人！</td><td><strong>10</strong></td><td>Nice 的小僧，我们的 dotnetchina 马上火起来了</td></tr><tr><td>😮 木木 Woody</td><td><strong>10</strong></td><td>感谢您的开源项目！</td></tr><tr><td>😚 Joker Hou</td><td><strong>QQ 超级会员一个月</strong></td><td></td></tr><tr><td>🤠 ccdfz</td><td><strong>QQ 专属红包 199</strong></td><td></td></tr><tr><td>🌝 天夫李总</td><td><strong>支付宝 6666</strong></td><td>Fur 非常有意思，持续关注</td></tr><tr><td>😝 六尘子</td><td><strong>微信红包 199</strong></td><td>公司已经使用，小小敬意</td></tr></tbody></table><p>非常感谢您们的支持，正是因为您们，中国开源才可以越走越远，<code>Fur</code> 越走越远。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🥔-qq-交流群"></a>🥔 QQ 交流群<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🥔-qq-交流群" title="Direct link to heading">#</a></h2><img src="/img/dotnetchina.jpg" height="300" style="display:block"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2cZh" id="🧆-友情链接"></a>🧆 友情链接<a aria-hidden="true" tabindex="-1" class="hash-link" href="#🧆-友情链接" title="Direct link to heading">#</a></h2><p>👉 <strong><a href="https://gitee.com/monksoul/Fur" target="_blank" rel="noopener noreferrer">Fur</a></strong> 👉 <strong><a href="https://github.com/sunkaixuan/SqlSugar" target="_blank" rel="noopener noreferrer">SqlSugar</a></strong> 👉 <strong><a href="https://gitee.com/monksoul/LayX" target="_blank" rel="noopener noreferrer">Layx</a></strong> 👉 <strong><a href="https://gitee.com/tywo45/t-io" target="_blank" rel="noopener noreferrer">t-io</a></strong> 👉 <strong><a href="http://www.thinkphp.cn/" target="_blank" rel="noopener noreferrer">ThinkPHP</a></strong> 👉 <strong><a href="https://hutool.cn/" target="_blank" rel="noopener noreferrer">Hutool</a></strong> 👉 <strong><a href="https://gitee.com/LongbowEnterprise/BootstrapAdmin" target="_blank" rel="noopener noreferrer">BootstrapAdmin</a></strong> 👉 <strong><a href="https://blazor.sdgxgz.com/" target="_blank" rel="noopener noreferrer">BootstrapBlazor</a></strong> 👉 <strong><a href="https://gitee.com/IoTSharp/IoTSharp" target="_blank" rel="noopener noreferrer">IoTSharp</a></strong></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://gitee.com/monksoul/Fur/tree/main/handbook/docs/introduce.mdx" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 40 40" style="margin-right:0.3em;vertical-align:sub"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/author"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">1.2 关于作者 »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_3SO_"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#-名字的由来" class="table-of-contents__link">🍕 名字的由来</a></li><li><a href="#-关于-logo" class="table-of-contents__link">🍔 关于 LOGO</a></li><li><a href="#-文档地址" class="table-of-contents__link">🍟 文档地址</a></li><li><a href="#🥦-系列教程" class="table-of-contents__link">🥦 系列教程</a></li><li><a href="#-开源地址" class="table-of-contents__link">🌭 开源地址</a></li><li><a href="#-docker-镜像" class="table-of-contents__link">🍿 Docker 镜像</a></li><li><a href="#-框架特点" class="table-of-contents__link">🍎 框架特点</a></li><li><a href="#🥞-架构设计" class="table-of-contents__link">🥞 架构设计</a></li><li><a href="#🥝-功能模块" class="table-of-contents__link">🥝 功能模块</a></li><li><a href="#🥐-框架依赖" class="table-of-contents__link">🥐 框架依赖</a></li><li><a href="#🥗-环境要求" class="table-of-contents__link">🥗 环境要求</a></li><li><a href="#🥪-支持平台" class="table-of-contents__link">🥪 支持平台</a></li><li><a href="#-关于性能" class="table-of-contents__link">🍖 关于性能</a></li><li><a href="#-关于作者" class="table-of-contents__link">🍚 关于作者</a></li><li><a href="#-项目成员" class="table-of-contents__link">🍤 项目成员</a></li><li><a href="#-他们都在用" class="table-of-contents__link">🍝 他们都在用</a></li><li><a href="#-贡献代码" class="table-of-contents__link">🍻 贡献代码</a></li><li><a href="#-捐赠列表" class="table-of-contents__link">🍍 捐赠列表</a></li><li><a href="#🥔-qq-交流群" class="table-of-contents__link">🥔 QQ 交流群</a></li><li><a href="#🧆-友情链接" class="table-of-contents__link">🧆 友情链接</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">文档</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs">入门</a></li><li class="footer__item"><a class="footer__link-item" href="/docs">指南</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">社区</h4><ul class="footer__items"><li class="footer__item"><a href="https://gitee.com/monksoul/Fur/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">讨论</a></li><li class="footer__item"><a href="https://gitee.com/monksoul/Fur/board" target="_blank" rel="noopener noreferrer" class="footer__link-item">看板</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">更多</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/blog">博客</a></li><li class="footer__item"><a href="https://gitee.com/monksoul/Fur" target="_blank" rel="noopener noreferrer" class="footer__link-item">仓库</a></li></ul></div></div><div class="text--center"><div>Copyright © 2020 Fur, Baiqian Co.,Ltd.</div></div></div></footer></div>
<script src="/styles.1af3f57f.js"></script>
<script src="/runtime~main.e2f14afc.js"></script>
<script src="/main.cb4b4173.js"></script>
<script src="/1.7bcff63a.js"></script>
<script src="/2.f71a81b4.js"></script>
<script src="/01a85c17.755a5885.js"></script>
<script src="/1be78505.572787d1.js"></script>
<script src="/6875c492.a75dca0e.js"></script>
<script src="/a6aa9e1f.005e050b.js"></script>
<script src="/ccc49370.0b963bc5.js"></script>
<script src="/ece76bd1.5f0e74a1.js"></script>
<script src="/86.763e07e0.js"></script>
<script src="/85.f9b1e033.js"></script>
<script src="/f976f453.d1d87a8b.js"></script>
<script src="/17896441.b0924391.js"></script>
<script src="/4c30b939.61ef6eb4.js"></script>
</body>
</html>